﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using FluentValidation;

using ERPStore.Extensions;


namespace ERPStore.Cart.ModelValidators
{
	public class CartValidator : AbstractValidator<ERPStore.Models.OrderCart>
	{
		public CartValidator()
		{
			Custom(p =>
			{
				if (p.GrandTotal < p.GetMinimalOrderAmount())
				{
					var message = string.Format("Le montant minimum de commande {0:F2} HT n'est pas atteint", p.GetMinimalOrderAmount());
					return new FluentValidation.Results.ValidationFailure("GrandTotal", message);
				}
				return null;
			});

			RuleFor(p => p.ItemCount)
				.GreaterThan(0)
				.WithMessage("Le panier doit contenir au moins un produit");

			RuleFor(p => p.DeliveryAddress)
				.NotNull()
				.When(i => i.ValidationName == "Shipping"
						|| i.ValidationName == "Confirmation")
				.WithMessage("L'adresse de livraison doit etre indiquée");

			RuleFor(p => p.BillingAddress)
				.NotNull()
				.When(i => i.ValidationName == "Shipping"
						|| i.ValidationName == "Confirmation")
				.WithMessage("L'adresse de facturation doit etre indiquée");

		}
	}
}
